# Read the data file and run analyses.

setwd("F:/Experiment Data/Complex Contagion/ComplexContagionDatasets/")
exp2 = read.csv("Exp2_polarizing_questions.csv")

# Code dependent variables.
# Code Self, Schis and Other columns.
exp2$Self = 0
exp2[exp2$userChoice == "Keep_10_cents_and_Do_Not_Donate", c("Self")] = 1
exp2$Schis = 0
exp2[exp2$userChoice == "Schistosomiasis_Control_Initiative", c("Schis")] = 1
exp2$Other = 0
exp2[exp2$Self == 0 & exp2$Schis == 0, c("Other")] = 1

# Code AnyCharity column.
exp2$AnyCharity = 0
exp2[exp2$userChoice != "Keep_10_cents_and_Do_Not_Donate", c("AnyCharity")] = 1

# Code independent variables.
# Code Tie Strength column.
exp2$TieStrength = "High"
exp2[grepl("^AllLo__", exp2$conditionName), c("TieStrength")] = "Low"
#exp2[, c("conditionName", "TieStrength")]

# Code SelfNeighbors, SchisNeighbors and OtherNeighbors columns.
exp2$SelfNeighbors = 0
exp2[grepl("Self_1", exp2$conditionName), c("SelfNeighbors")] = 1
exp2[grepl("Self_2", exp2$conditionName), c("SelfNeighbors")] = 2
exp2[grepl("Self_3", exp2$conditionName), c("SelfNeighbors")] = 3

exp2$SchisNeighbors = 0
exp2[grepl("Schis_1", exp2$conditionName), c("SchisNeighbors")] = 1
exp2[grepl("Schis_2", exp2$conditionName), c("SchisNeighbors")] = 2
exp2[grepl("Schis_3", exp2$conditionName), c("SchisNeighbors")] = 3

exp2$OtherNeighbors = 0
exp2[grepl("Rand_1", exp2$conditionName), c("OtherNeighbors")] = 1
exp2[grepl("Rand_2", exp2$conditionName), c("OtherNeighbors")] = 2
exp2[grepl("Rand_3", exp2$conditionName), c("OtherNeighbors")] = 3

# Influence curves.  First split by tie strength, then together.
# UserChoice is Schis by Schis neighbor count.  Split by Tie Strength.
aggregate(Schis ~ TieStrength + SchisNeighbors, exp2, mean)
aggregate(Schis ~ SchisNeighbors, exp2, mean)

# Means will give us the proportions, but let's also get the raw numerator and denominator.
exp2$countMe = 1
aggregate(Schis ~ TieStrength + SchisNeighbors, exp2, sum)
aggregate(countMe ~ TieStrength + SchisNeighbors, exp2, sum)
table(exp2$SchisNeighbors)

# Fit a line and then predict values.
schisDataToFit = as.data.frame(aggregate(Schis ~ SchisNeighbors, exp2, mean))
linearModel = lm(Schis ~ SchisNeighbors, data=schisDataToFit)
summary(linearModel)
xValues = c(0,1,2,3)
predict(linearModel, list(SchisNeighbors=xValues))


